/*
 * Filtros.java
 *
 * Copyright 2011 Monica S. Cavalcante.
 * All rights reserved.
 *
 * This file is part of Mandatory Arrest
 *
 * MandatoryArrest is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * MandatoryArrest is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with MandatoryArrest. If not, see <http://www.gnu.org/licenses/>.
 *
 * Contributors:
 * Monica Santana monicaasc.cc at gmail.com
 */

package br.edu.ufcg.dsc.lp2.projeto.model;

import java.util.ArrayList;
import java.util.List;

/**
 * 
 * Filtros para recomendacoes. Podendo ser pelo tipo de almoco servido num
 * estabelecimento, ou por uma palavra que contenha no nome do estabelecimento.
 * O filtro de tipo elimina todos os outros estabelecimentos que nao sejam do
 * tipo passado pelo usuario. E o filtro por palavra no nome, elimina todos
 * estabelecimentos que contenha aquela palavra no nome do estabelecimento.
 * 
 * @author Monica Santana Cavalcante monicaasc.cc at gmail.com
 * 
 */
public class Filtros {

	/**
	 * Elimina estabelecimentos de um lista que nao sejam do tipo de almoco
	 * escolhido.
	 * 
	 * @param tipoDeAlmoco
	 *            Tipo de almoco.
	 * @param estabelecimentos
	 *            Lista com estabelecimentos.
	 * @return Lista contendo apenas estabelecimentos do tipo de almoco
	 *         escolhido.
	 */
	public static void filtroTipoDeAlmoco(String tipoDeAlmoco,
			List<Estabelecimento> estabelecimentos) {
		List<Estabelecimento> itensRemover = new ArrayList<Estabelecimento>();

		for (Estabelecimento estabelecimento : estabelecimentos) {
			if (!estabelecimento.getTipoDeAlmoco().equals(tipoDeAlmoco)) {
				itensRemover.add(estabelecimento);
			}
		}
		estabelecimentos.removeAll(itensRemover);
	}

	/**
	 * Elimina estabelecimentos que contenha em seu nome uma palavra informada.
	 * 
	 * @param parteNome
	 *            Palavra a ser verificada.
	 * @param estabelecimentos
	 *            Lista com estabelecimentos.
	 * @return Lista contendo apenas estabelecimentos que nao tenham a palavra
	 *         informada no nome.
	 */
	public static void filtroContemNoNome(String parteNome,
			List<Estabelecimento> estabelecimentos) {
		List<Estabelecimento> itensRemover = new ArrayList<Estabelecimento>();

		for (Estabelecimento estabelecimento : estabelecimentos) {
			if ((estabelecimento.getNome().toLowerCase()).contains(parteNome
					.toLowerCase())) {
				itensRemover.add(estabelecimento);
			}
		}
		estabelecimentos.removeAll(itensRemover);
	}
}
